1. Field of the Invention
The present invention relates generally to computer software. More particularly, the present invention relates to methods and apparatus for implementing an application lifecycle design for software applications.
2. Description of Related Art
The digital television revolution is one of the most significant events in the history of broadcast television. With the advent of digital television, high speed data transfer is possible via satellite, cable and terrestrial television channels. Digital television offers users more channels as well as significantly improved video and audio quality. Most importantly, digital television ushers in the age of true interactive television. For instance, digital receivers will be able to offer users a variety of enhanced services, from simple interactive quiz shows, to internet, and a mix of television and web-type content. As the market for digital television grows, content developers are looking for a feature-rich, cost-effective, and reliable software platform upon which to build the next generation of interactive television services such as Electronic Programming Guides, Video-On-Demand, and Enhanced Broadcasting.
Java is a leading commercial object-oriented language designed as a portable language that can run on any compatible device that supports the JAVA™ PLATFORM. For instance, Java is incorporated into all major Web browsers. Thus, Java runs on any web-enabled computer via that computer's Web browser. As such, Java offers great promise as the software platform for set-top boxes and digital television.
In object-oriented programming, code and data are merged into objects. Each object is defined via its class, which determines the properties and behavior of an object. In other words, objects are individual instances of a class.
In the desktop environment, certain resources associated with each loaded application (e.g., classes and objects) need not be frequently released or tightly monitored since memory is relatively unlimited. However, memory is a valuable resource in the environment of embedded systems, particularly in the area of digital television. Moreover, in an interactive digital television environment, it will be common to run multiple applications. A digital television service might consist of audio, video and one or more applications. For instance, when a television viewer changes the channel, each associated service or program provided by that channel will likely require that multiple classes be loaded. As a result, memory will continually be allocated to the applications and associated classes until the limited amount of memory is consumed. Once the memory is consumed, it will be impossible to run any further applications. This is particularly important since it will be undesirable to reboot the set-top box in the event of an error.
The JAVA PLATFORM currently defines a number of application models, each with its own lifecycle. In general, these application lifecycle models have been designed to address specific issues on the JAVA PLATFORM. For instance, the Applet was designed to provide support for executable content in web pages. However, none of the existing application lifecycle models fully address the requirements specific to systems having limited memory, such as television receivers. For instance, classes associated with an Applet, once loaded, its class objects will not be removed from memory. Moreover, it is impossible to determine when execution of the Applet has been terminated.
In view of the above, it would be beneficial if an application lifecycle were designed to address the requirements specific to television receivers. Moreover, it would be desirable if a mechanism for managing the loading and execution of an application according to an application lifecycle were designed.